home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Speech.mod < prev    next >
Encoding:
Text File  |  1995-10-16  |  12.0 KB  |  357 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Speech.mod
  3.  
  4.      Contains:    Speech Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE Speech;
  23.  
  24. IMPORT SYSTEM, Types, Files;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.  
  30. CONST
  31.     kTextToSpeechSynthType*        = LONG("ttsc");
  32.     kTextToSpeechVoiceType*        = LONG("ttvd");
  33.     kTextToSpeechVoiceFileType*    = LONG("ttvf");
  34.     kTextToSpeechVoiceBundleType* = LONG("ttvb");
  35.  
  36.     kNoEndingProsody*            = 1;
  37.     kNoSpeechInterrupt*            = 2;
  38.     kPreflightThenPause*            = 4;
  39.  
  40.     kImmediate*                    = 0;
  41.     kEndOfWord*                    = 1;
  42.     kEndOfSentence*                = 2;
  43.  
  44. (*------------------------------------------*)
  45. (* GetSpeechInfo & SetSpeechInfo selectors    *)
  46. (*------------------------------------------*)
  47.     soStatus*                    = LONG("stat");
  48.     soErrors*                    = LONG("erro");
  49.     soInputMode*                    = LONG("inpt");
  50.     soCharacterMode*                = LONG("char");
  51.     soNumberMode*                = LONG("nmbr");
  52.     soRate*                        = LONG("rate");
  53.     soPitchBase*                    = LONG("pbas");
  54.     soPitchMod*                    = LONG("pmod");
  55.     soVolume*                    = LONG("volm");
  56.     soSynthType*                    = LONG("vers");
  57.     soRecentSync*                = LONG("sync");
  58.     soPhonemeSymbols*            = LONG("phsy");
  59.     soCurrentVoice*                = LONG("cvox");
  60.     soCommandDelimiter*            = LONG("dlim");
  61.     soReset*                        = LONG("rset");
  62.     soCurrentA5*                    = LONG("myA5");
  63.     soRefCon*                    = LONG("refc");
  64.     soTextDoneCallBack*            = LONG("tdcb");
  65.     soSpeechDoneCallBack*        = LONG("sdcb");
  66.     soSyncCallBack*                = LONG("sycb");
  67.     soErrorCallBack*                = LONG("ercb");
  68.     soPhonemeCallBack*            = LONG("phcb");
  69.     soWordCallBack*                = LONG("wdcb");
  70.     soSynthExtension*            = LONG("xtnd");
  71.     soSoundOutput*                = LONG("sndo");
  72.  
  73. (*------------------------------------------*)
  74. (* Speaking Mode Constants                     *)
  75. (*------------------------------------------*)
  76.     modeText*                    = LONG("TEXT");                        (* input mode constants                     *)
  77.     modePhonemes*                = LONG("PHON");
  78.     modeNormal*                    = LONG("NORM");                        (* character mode and number mode constants *)
  79.     modeLiteral*                    = LONG("LTRL");
  80.  
  81.     soVoiceDescription*            = LONG("info");
  82.     soVoiceFile*                    = LONG("fref");
  83.  
  84.  
  85. TYPE
  86.     SpeechChannelRecord* = RECORD
  87.         data*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF LONGINT;
  88.     END;
  89.  
  90.     SpeechChannel* = POINTER TO SpeechChannelRecord;
  91.  
  92.     VoiceSpecPtr* = POINTER TO VoiceSpec;
  93.     VoiceSpec* = RECORD
  94.         creator*:                Types.OSType;
  95.         id*:                        Types.OSType;
  96.     END;
  97.  
  98.  
  99. CONST
  100.     kNeuter*                        = 0;
  101.     kMale*                        = 1;
  102.     kFemale*                        = 2;
  103.  
  104.  
  105. TYPE
  106.     VoiceDescription* = RECORD
  107.         length*:                    LONGINT;
  108.         voice*:                    VoiceSpec;
  109.         version*:                LONGINT;
  110.         name*:                    Types.Str63;
  111.         comment*:                Types.Str255;
  112.         gender*:                    INTEGER;
  113.         age*:                    INTEGER;
  114.         script*:                    INTEGER;
  115.         language*:                INTEGER;
  116.         region*:                    INTEGER;
  117.         reserved*:                ARRAY 4 (*ΔΔ[0..3]ΔΔ*) OF LONGINT;
  118.     END;
  119.  
  120.     VoiceFileInfo* = RECORD
  121.         fileSpec*:                Files.FSSpec;
  122.         resID*:                    INTEGER;
  123.     END;
  124.  
  125.     SpeechStatusInfo* = RECORD
  126.         outputBusy*:                BOOLEAN;
  127.         outputPaused*:            BOOLEAN;
  128.         inputBytesLeft*:            LONGINT;
  129.         phonemeCode*:            INTEGER;
  130.     END;
  131.  
  132.     SpeechErrorInfo* = RECORD
  133.         count*:                    INTEGER;
  134.         oldest*:                    Types.OSErr;
  135.         oldPos*:                    LONGINT;
  136.         newest*:                    Types.OSErr;
  137.         newPos*:                    LONGINT;
  138.     END;
  139.  
  140.     SpeechVersionInfo* = RECORD
  141.         synthType*:                Types.OSType;
  142.         synthSubType*:            Types.OSType;
  143.         synthManufacturer*:        Types.OSType;
  144.         synthFlags*:                LONGINT;
  145.         synthVersion*:            Types.NumVersion;
  146.     END;
  147.  
  148.     PhonemeInfo* = RECORD
  149.         opcode*:                    INTEGER;
  150.         phStr*:                    Types.Str15;
  151.         exampleStr*:                Types.Str31;
  152.         hiliteStart*:            INTEGER;
  153.         hiliteEnd*:                INTEGER;
  154.     END;
  155.  
  156.     PhonemeDescriptor* = RECORD
  157.         phonemeCount*:            INTEGER;
  158.         thePhonemes*:            ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF PhonemeInfo;
  159.     END;
  160.  
  161.     SpeechXtndData* = (*ΔΔPACKEDΔΔ*) RECORD
  162.         synthCreator*:            Types.OSType;
  163.         synthData*:                ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF Types.Byte;
  164.     END;
  165.  
  166.     DelimiterInfo* = (*ΔΔPACKEDΔΔ*) RECORD
  167.         startDelimiter*:            ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF Types.Byte;
  168.         endDelimiter*:            ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF Types.Byte;
  169.     END;
  170.  
  171.     SpeechTextDoneProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Types.Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT);
  172.     SpeechDoneProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (parameter0: SpeechChannel; parameter1: LONGINT);
  173.     SpeechSyncProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (parameter0: SpeechChannel; parameter1: LONGINT; parameter2: Types.OSType);
  174.     SpeechErrorProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (parameter0: SpeechChannel; parameter1: LONGINT; parameter2: Types.OSErr; parameter3: LONGINT);
  175.     SpeechPhonemeProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER);
  176.     SpeechWordProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER);
  177.     SpeechTextDoneUPP* = Types.UniversalProcPtr;
  178.     SpeechDoneUPP* = Types.UniversalProcPtr;
  179.     SpeechSyncUPP* = Types.UniversalProcPtr;
  180.     SpeechErrorUPP* = Types.UniversalProcPtr;
  181.     SpeechPhonemeUPP* = Types.UniversalProcPtr;
  182.     SpeechWordUPP* = Types.UniversalProcPtr;
  183.  
  184. CONST
  185.     uppSpeechTextDoneProcInfo* = $0000FFC0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param); *)
  186.     uppSpeechDoneProcInfo* = $000003C0; (* PROCEDURE (4 byte param, 4 byte param); *)
  187.     uppSpeechSyncProcInfo* = $00000FC0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param); *)
  188.     uppSpeechErrorProcInfo* = $00003BC0; (* PROCEDURE (4 byte param, 4 byte param, 2 byte param, 4 byte param); *)
  189.     uppSpeechPhonemeProcInfo* = $00000BC0; (* PROCEDURE (4 byte param, 4 byte param, 2 byte param); *)
  190.     uppSpeechWordProcInfo* = $00002FC0; (* PROCEDURE (4 byte param, 4 byte param, 4 byte param, 2 byte param); *)
  191.  
  192. PROCEDURE NewSpeechTextDoneProc*(userRoutine: SpeechTextDoneProcPtr): SpeechTextDoneUPP;
  193.     (*$IF NOT GENERATINGCFM *)
  194.     INLINE PASCAL $2E9F;
  195.     (*$END*)
  196.  
  197. PROCEDURE NewSpeechDoneProc*(userRoutine: SpeechDoneProcPtr): SpeechDoneUPP;
  198.     (*$IF NOT GENERATINGCFM *)
  199.     INLINE PASCAL $2E9F;
  200.     (*$END*)
  201.  
  202. PROCEDURE NewSpeechSyncProc*(userRoutine: SpeechSyncProcPtr): SpeechSyncUPP;
  203.     (*$IF NOT GENERATINGCFM *)
  204.     INLINE PASCAL $2E9F;
  205.     (*$END*)
  206.  
  207. PROCEDURE NewSpeechErrorProc*(userRoutine: SpeechErrorProcPtr): SpeechErrorUPP;
  208.     (*$IF NOT GENERATINGCFM *)
  209.     INLINE PASCAL $2E9F;
  210.     (*$END*)
  211.  
  212. PROCEDURE NewSpeechPhonemeProc*(userRoutine: SpeechPhonemeProcPtr): SpeechPhonemeUPP;
  213.     (*$IF NOT GENERATINGCFM *)
  214.     INLINE PASCAL $2E9F;
  215.     (*$END*)
  216.  
  217. PROCEDURE NewSpeechWordProc*(userRoutine: SpeechWordProcPtr): SpeechWordUPP;
  218.     (*$IF NOT GENERATINGCFM *)
  219.     INLINE PASCAL $2E9F;
  220.     (*$END*)
  221.  
  222. PROCEDURE CallSpeechTextDoneProc*(parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Types.Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT; userRoutine: SpeechTextDoneUPP);
  223.     (*$IF NOT GENERATINGCFM*)
  224.     INLINE PASCAL $205F, $4E90;
  225.     (*$END*)
  226.  
  227. PROCEDURE CallSpeechDoneProc*(parameter0: SpeechChannel; parameter1: LONGINT; userRoutine: SpeechDoneUPP);
  228.     (*$IF NOT GENERATINGCFM*)
  229.     INLINE PASCAL $205F, $4E90;
  230.     (*$END*)
  231.  
  232. PROCEDURE CallSpeechSyncProc*(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: Types.OSType; userRoutine: SpeechSyncUPP);
  233.     (*$IF NOT GENERATINGCFM*)
  234.     INLINE PASCAL $205F, $4E90;
  235.     (*$END*)
  236.  
  237. PROCEDURE CallSpeechErrorProc*(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: Types.OSErr; parameter3: LONGINT; userRoutine: SpeechErrorUPP);
  238.     (*$IF NOT GENERATINGCFM*)
  239.     INLINE PASCAL $205F, $4E90;
  240.     (*$END*)
  241.  
  242. PROCEDURE CallSpeechPhonemeProc*(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER; userRoutine: SpeechPhonemeUPP);
  243.     (*$IF NOT GENERATINGCFM*)
  244.     INLINE PASCAL $205F, $4E90;
  245.     (*$END*)
  246.  
  247. PROCEDURE CallSpeechWordProc*(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER; userRoutine: SpeechWordUPP);
  248.     (*$IF NOT GENERATINGCFM*)
  249.     INLINE PASCAL $205F, $4E90;
  250.     (*$END*)
  251.  
  252. PROCEDURE SpeechManagerVersion*(): LONGINT (*ΔΔ NumVersion*);
  253.     (*$IF NOT GENERATINGCFM*)
  254.     INLINE PASCAL $203C, $0000, $000C, $A800;
  255.     (*$END*)
  256. PROCEDURE MakeVoiceSpec*(creator: Types.OSType; id: Types.OSType; VAR voice: VoiceSpec): Types.OSErr;
  257.     (*$IF NOT GENERATINGCFM*)
  258.     INLINE PASCAL $203C, $0604, $000C, $A800;
  259.     (*$END*)
  260. PROCEDURE CountVoices*(VAR numVoices: INTEGER): Types.OSErr;
  261.     (*$IF NOT GENERATINGCFM*)
  262.     INLINE PASCAL $203C, $0108, $000C, $A800;
  263.     (*$END*)
  264. PROCEDURE GetIndVoice*(index: INTEGER; VAR voice: VoiceSpec): Types.OSErr;
  265.     (*$IF NOT GENERATINGCFM*)
  266.     INLINE PASCAL $203C, $030C, $000C, $A800;
  267.     (*$END*)
  268. PROCEDURE GetVoiceDescription*(voice: VoiceSpecPtr; VAR info: VoiceDescription; infoLength: LONGINT): Types.OSErr;
  269.     (*$IF NOT GENERATINGCFM*)
  270.     INLINE PASCAL $203C, $0610, $000C, $A800;
  271.     (*$END*)
  272. PROCEDURE GetVoiceInfo*(voice: VoiceSpecPtr; selector: Types.OSType; voiceInfo: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  273.     (*$IF NOT GENERATINGCFM*)
  274.     INLINE PASCAL $203C, $0614, $000C, $A800;
  275.     (*$END*)
  276. PROCEDURE NewSpeechChannel*(voice: VoiceSpecPtr; VAR chan: SpeechChannel): Types.OSErr;
  277.     (*$IF NOT GENERATINGCFM*)
  278.     INLINE PASCAL $203C, $0418, $000C, $A800;
  279.     (*$END*)
  280. PROCEDURE DisposeSpeechChannel*(chan: SpeechChannel): Types.OSErr;
  281.     (*$IF NOT GENERATINGCFM*)
  282.     INLINE PASCAL $203C, $021C, $000C, $A800;
  283.     (*$END*)
  284. PROCEDURE SpeakString*(s: Types.StringPtr): Types.OSErr;
  285.     (*$IF NOT GENERATINGCFM*)
  286.     INLINE PASCAL $203C, $0220, $000C, $A800;
  287.     (*$END*)
  288. PROCEDURE SpeakText*(chan: SpeechChannel; textBuf: Types.Ptr; textBytes: LONGINT): Types.OSErr;
  289.     (*$IF NOT GENERATINGCFM*)
  290.     INLINE PASCAL $203C, $0624, $000C, $A800;
  291.     (*$END*)
  292. PROCEDURE SpeakBuffer*(chan: SpeechChannel; textBuf: Types.Ptr; textBytes: LONGINT; controlFlags: LONGINT): Types.OSErr;
  293.     (*$IF NOT GENERATINGCFM*)
  294.     INLINE PASCAL $203C, $0828, $000C, $A800;
  295.     (*$END*)
  296. PROCEDURE StopSpeech*(chan: SpeechChannel): Types.OSErr;
  297.     (*$IF NOT GENERATINGCFM*)
  298.     INLINE PASCAL $203C, $022C, $000C, $A800;
  299.     (*$END*)
  300. PROCEDURE StopSpeechAt*(chan: SpeechChannel; whereToStop: LONGINT): Types.OSErr;
  301.     (*$IF NOT GENERATINGCFM*)
  302.     INLINE PASCAL $203C, $0430, $000C, $A800;
  303.     (*$END*)
  304. PROCEDURE PauseSpeechAt*(chan: SpeechChannel; whereToPause: LONGINT): Types.OSErr;
  305.     (*$IF NOT GENERATINGCFM*)
  306.     INLINE PASCAL $203C, $0434, $000C, $A800;
  307.     (*$END*)
  308. PROCEDURE ContinueSpeech*(chan: SpeechChannel): Types.OSErr;
  309.     (*$IF NOT GENERATINGCFM*)
  310.     INLINE PASCAL $203C, $0238, $000C, $A800;
  311.     (*$END*)
  312. PROCEDURE SpeechBusy*(): INTEGER;
  313.     (*$IF NOT GENERATINGCFM*)
  314.     INLINE PASCAL $203C, $003C, $000C, $A800;
  315.     (*$END*)
  316. PROCEDURE SpeechBusySystemWide*(): INTEGER;
  317.     (*$IF NOT GENERATINGCFM*)
  318.     INLINE PASCAL $203C, $0040, $000C, $A800;
  319.     (*$END*)
  320. PROCEDURE SetSpeechRate*(chan: SpeechChannel; rate: Types.Fixed): Types.OSErr;
  321.     (*$IF NOT GENERATINGCFM*)
  322.     INLINE PASCAL $203C, $0444, $000C, $A800;
  323.     (*$END*)
  324. PROCEDURE GetSpeechRate*(chan: SpeechChannel; VAR rate: Types.Fixed): Types.OSErr;
  325.     (*$IF NOT GENERATINGCFM*)
  326.     INLINE PASCAL $203C, $0448, $000C, $A800;
  327.     (*$END*)
  328. PROCEDURE SetSpeechPitch*(chan: SpeechChannel; pitch: Types.Fixed): Types.OSErr;
  329.     (*$IF NOT GENERATINGCFM*)
  330.     INLINE PASCAL $203C, $044C, $000C, $A800;
  331.     (*$END*)
  332. PROCEDURE GetSpeechPitch*(chan: SpeechChannel; VAR pitch: Types.Fixed): Types.OSErr;
  333.     (*$IF NOT GENERATINGCFM*)
  334.     INLINE PASCAL $203C, $0450, $000C, $A800;
  335.     (*$END*)
  336. PROCEDURE SetSpeechInfo*(chan: SpeechChannel; selector: Types.OSType; speechInfo: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  337.     (*$IF NOT GENERATINGCFM*)
  338.     INLINE PASCAL $203C, $0654, $000C, $A800;
  339.     (*$END*)
  340. PROCEDURE GetSpeechInfo*(chan: SpeechChannel; selector: Types.OSType; speechInfo: (*ΔΔUNIVΔΔ*) Types.Ptr): Types.OSErr;
  341.     (*$IF NOT GENERATINGCFM*)
  342.     INLINE PASCAL $203C, $0658, $000C, $A800;
  343.     (*$END*)
  344. PROCEDURE TextToPhonemes*(chan: SpeechChannel; textBuf: Types.Ptr; textBytes: LONGINT; phonemeBuf: Types.Handle; VAR phonemeBytes: LONGINT): Types.OSErr;
  345.     (*$IF NOT GENERATINGCFM*)
  346.     INLINE PASCAL $203C, $0A5C, $000C, $A800;
  347.     (*$END*)
  348. PROCEDURE UseDictionary*(chan: SpeechChannel; dictionary: Types.Handle): Types.OSErr;
  349.     (*$IF NOT GENERATINGCFM*)
  350.     INLINE PASCAL $203C, $0460, $000C, $A800;
  351.     (*$END*)
  352.  
  353. (* $ALIGN RESET*)
  354. (* $POP*)
  355.  
  356.  END Speech.
  357.